Serial attached storage protocols, such as serial ATA (SATA) and serial SCSI (SAS) are becoming more prevalent as storage interfaces for connecting hard drives to a computer system. In computer systems implementing such serially attached storage devices, one storage device in the system may communicate with others. For example, a device requesting data (referred to as the initiator device) may receive data from a target device.
The devices typically include a processing engine to perform input/output (I/O) transactions. A typical I/O processing engine is impeded by its reliance on system software/firmware for I/O transaction management. Currently, system software or firmware is involved in each step of I/O processing. For example, FIG. 1 shows a flow diagram of an I/O write.
As shown in FIG. 1, processing a single I/O transaction involves executing multiple steps. Each action on the left side of the figure uses firmware to interact with device link layer/transport layer hardware. Each time firmware intervenes, latency is introduced into the system. This latency accumulates over the multiple steps of the I/O and has a substantial effect on the overall time of completion of the I/O transaction.
Further, in the case of a configuration with more than one lane, optimal performance occurs when all of the serial links or lanes are operating in parallel. Anytime firmware is servicing a lane, another lane may be idle while the lane is waiting for firmware interaction. The more lanes the system supports the greater the impact to system performance. Even in a single lane configuration, the single lane may be idle while waiting for firmware actions. Thus, performance may be improved anytime the real-time interaction between firmware and hardware is reduced or eliminated.